package org.jeecg.modules.qyxx.mapper;

import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.qyxxora.entity.dto.StatCommonDto;
import org.jeecg.modules.qyxxora.vo.*;

import java.util.List;
import java.util.Map;

/**
 * @author chensherun on 2022/1/13.
 * @version 1.0
 */
public interface StatisticsMapper {

    /**
     * 生产要素的最大属期
     * @return
     */
    String selectScyszbjcMaxSsny(@Param("year") String year);

    /**
     * 查询各地市的预警情况
     * @param ssny
     * @return
     */
    List<StatCityWarningVo> selectCityWarning(@Param("ssny") String ssny);

    /**
     * 查询下级机构网点预警和响应统计（含下下级等）
     * @param ssny
     * @param saleNetCode
     * @return
     */
    List<StatChildOrgWarningVo> selectChildOrgWarning(@Param("ssny") String ssny, @Param("saleNetCode") String saleNetCode);

    /**
     * 预警概况和预警余额饼图
     *         授权客户数、预警客户数、红色预警余额、橙色预警余额、蓝色预警余额、
     *         预警率（预警客户/授权客户）
     *         x色预警余额占比 （x色预警余额/总贷款余额）
     * @param ssny
     * @param saleNetCode
     * @return
     */
    StatWaringSituation selectStatWaringSituation(@Param("ssny") String ssny, @Param("saleNetCode") String saleNetCode);

    /**
     * 预警核查情况 预警数，未核查数，核查中数，已核查数
     * @param ssny
     * @param saleNetCode
     * @return
     */
    StatResponseSituation selectStatWarningResponseSituation(@Param("ssny") String ssny, @Param("saleNetCode") String saleNetCode);

    /**
     * 按指标类型统计预警核查情况
     * @param ssny
     * @param saleNetCode
     * @return
     */
    List<StatIndexWarningResponseVo> selectStatIndexWarningResponse(@Param("ssny") String ssny, @Param("saleNetCode") String saleNetCode, @Param("dictItems") String dictItems);

    /**
     * 获取省区域预警余额情况
     * @param ssny
     * @return
     */
    List<WarningConditionVo> selectAreaWarning(String ssny);

    List<ResponseConditionVo> selectAreaResponse(String ssny);

    List<WarningConditionVo> selectDistrictWarning(@Param("ids") List<String> ids,@Param("ssny") String ssny);

    List<ResponseConditionVo> selectDistrictResponse(@Param("ids") List<String> ids,@Param("ssny") String ssny);

    String selectIdByCode(String code);

    List<String> selectIdsByParentId(String id);

    /**
     * 按企业类型统计预警情况
     * @param ssny
     * @param saleNetCode
     * @return
     */
    List<StatWarningByOrgTypeVo> selectWarningByOrgType(@Param("ssny") String ssny, @Param("saleNetCode") String saleNetCode, @Param("dictItems") String dictItems);

    /**
     * 按企业类型统计响应情况
     * @param ssny
     * @param saleNetCode
     * @return
     */
    List<StatResponseByOrgTypeVo> selectResponseByOrgType(@Param("ssny") String ssny, @Param("saleNetCode") String saleNetCode, @Param("dictItems") String dictItems);
   // List<WarningByOrgTypeVo> selectWarningByOrgType(@Param("ssny") String ssny, @Param("saleNetCode") String saleNetCode);

    List<WarningByIndustryTypeVo> getWarningByIndustryType(StatCommonDto statCommonDto);

    List<ResponseByIndustryTypeVo> getResponseByIndustryType(StatCommonDto statCommonDto);

    /**
     * 预警趋势变化图
     * @param ssnyq
     * @param ssnyz
     * @param saleNetCode
     * @return
     */
    List<StatWarningTrendChartVo> selectWarningTrendChart(@Param("ssnyq") String ssnyq, @Param("ssnyz") String ssnyz, @Param("saleNetCode") String saleNetCode);

    /**
     * 响应趋势变化图
     * @param ssnyq
     * @param ssnyz
     * @param saleNetCode
     * @return
     */
    List<StatResponseTrendChartVo> selectResponseTrendChart(@Param("ssnyq") String ssnyq, @Param("ssnyz") String ssnyz, @Param("saleNetCode") String saleNetCode);

    List<Map<String, Object>> testListParm(@Param("itemValues") String itemValues);
}
